#pragma once

#include "../Thread/TaskThread.h"
#include <future>

class RenderThread : public TaskThread
{
	std::shared_future<void> mStartFuture;
	class ThreadManager* mThreadManager;

public:

	RenderThread(std::shared_future<void>& startFuture, ThreadManager* threadManager);

	virtual bool Init() override;

	virtual uint32 Run() override;

	virtual void Stop() override;

	virtual void Exit() override;

	virtual void ProcessTasksUntilReturn();

	void ProcessTasksForCleanup();

	void ProcessTasksForGC();

};